Personal computer systems are well known in the art. Personal computer systems in general, and IBM Personal Computers in particular, have attained wide spread use for providing computer power to many segments of today's modern society. Personal computers can typically be defined as a desktop, floor standing, or portable microcomputer that is comprised of a system unit having a single central processing unit (CPU) and associated volatile and non-volatile memory, including all RAM and BIOS ROM, a system monitor, a keyboard, one or more flexible diskette drives, a fixed disk storage, and an optional printer. One of the distinguishing characteristics of these systems is the use of a motherboard or system planar to electrically connect these components together. These systems are designed primarily to give independent computing power to a single user and are inexpensively priced for purchase by individuals or small business. Examples of such personal computer systems are IBM's PERSONAL COMPUTER AT and IBM's PERSONAL SYSTEM/2 Models 25, 30, L40SX, 50, 55, 65, 70, 80, 90 and 95.
In computer systems, the components communicate via electrical signals. These electrical signals are typically carried by electrical connections between the system components. Typical types of electrical connections include metal traces on a printed circuit board, vias, plated through holes, plugs, and individual wires wrapped from pin to pin of system components. Typically groups of electrical signals and groups of electrical connections that carry the electrical signals are referred to as a "bus." Thus, a reference to a "bus" can indicate a reference to a group of electrical signals, a group of electrical connections that carry the electrical signals, or a reference to both a group of electrical signals that form a protocol and a group of electrical connections that carry the electrical signals.
Personal computer systems are typically used to run software to perform such diverse activities as word processing, manipulation of data via spread-sheets, collection and relation of data in databases, displays of graphics, design of electrical or mechanical systems using system-design software, etc.
One relatively recent use of the personal computer is that of the so called "multimedia" system. In a multimedia system, the personal computer is used to present a video presentation, an audio presentation, an audio/visual presentation, or a networking signal for computer networks. For example, in a very simple multimedia system, the user of the personal computer could listen to music from an audio compact disk (CD) while working on a document in a spreadsheet program running on the same computer. In more complex examples, the personal computer is used to present a real-time audio/visual presentation, such as a marketing presentation for a company, or is used as a server, which requires it to generate a network signal without any intervention from the user.
One characteristic of multimedia systems is the requirement that the computer system access large volumes of data from a direct access storage device (DASD), such as a fixed disk drive or a CD peripheral. In general, a multimedia presentation that is more complex will require more data being accessed from the DASD than a simpler multimedia presentation. Therefore, as multimedia presentations become more complex, multimedia systems must transfer larger and larger amounts of data from the DASDs.
The major problem with current multimedia personal computer systems is that they are not designed to simultaneously run complex programs by the CPU in system memory and transfer the large blocks of data needed to present real-time multimedia presentations.
In early multimedia computer systems, the transfer of data between the DASD and the computer system was done by the system CPU. This allowed presentations similar to "slide shows" to be presented, but did not allow anything close to real-time audio/visual presentations, similar to television programs, to be presented. It became apparent early in the development of multimedia systems that for a real-time system to work effectively, something other than the CPU would need to be used to make the presentations.
One common way of reducing the overhead to the CPU in multimedia systems is to add a coprocessor to the system. A coprocessor is typically either a microprocessor, similar to the CPU, or a digital signal processor (DSP), tied to the CPU. Coprocessors typically differ from CPUs in that the CPU is typically designed to run operating systems, such as IBM's PC-DOS and OS/2, and programs designed to run on those operating systems. Further, the CPU will typically issue commands to the coprocessor, which will then execute the command. Moreover, the coprocessor is typically optimized to perform one or more specific functions. A very common example of a coprocessor optimized to perform a specific function is an arithmetic coprocessor, such as the Intel 80387, which is used to reduce the amount of overhead of the CPU in performing mathematical operations. More specific to multimedia systems are specific coprocessors designed to handle video, audio, or network signals or VGA or XGA cards. Audio and video data are usually compressed to minimize the amount of space needed on a DASD to store the data. Consequently, one very common function of audio and video coprocessors is the decompression function by which the compressed audio and video data are decompressed and then electrically transformed from digital data to the analog data. An example of such a coprocessor is Intel's DVI chipset. Another type of coprocessor is IBM's XGA chipset which provides accelerated picture drawing.
Using coprocessors to reduce the overhead of the CPU has proven to be very helpful in producing systems capable of producing more realistic audio/visual presentations. However, this solution has not produced systems capable of simultaneously running programs in system memory while transferring the large blocks of data needed to present real-time audio/visual presentations. Although the CPU is not involved in the decompression and manipulation of the audio and/or video data in the system with a coprocessor, the CPU still is involved in the data transfer from the DASD to the coprocessor. Consequently, adding a coprocessor is not, by itself, enough to free up the CPU while presenting real-time presentations except in the simplest of instances. For example, the computer operator listening to music from a CD while running a program on the computer system would notice either the CD music stopping while the computer is running the program or the computer program stopping while the system accesses the DASD to get the large amount of data needed to play the music.
Several attempts to further reduce the overhead on the CPU have been attempted. Various computer architectures have been designed in an attempt to minimize the amount of overhead of the CPU for any given transfer of data. One such example is the use of a direct memory access (DMA) system. In this system, a DMA subcircuit essentially takes control of the system bus, allowing a higher number of data transfers per second to be performed than if the CPU is performing the same transfer. Obviously if the DMA controller has control of the system bus, the CPU must halt any activity.
A more recent computer architecture used to ease the overhead of the CPU involves the use of the coprocessor as a busmaster. In a busmaster system, the busmaster arbitrates control of the system bus between one or more system components. For example, once the coprocessor becomes the busmaster, the CPU relinquishes control of the system buss the coprocessor takes control of the system bus, and the coprocessor then performs the data transfers as though the coprocessor is the CPU. Again, similar to a DMA system, in a busmaster system the CPU isolates itself from the system bus, preventing it from performing any meaningful activity while the data is being transferred from the DASD to the coprocessor. The inactivity of the CPU can have the effect of either interrupting the computer program being run by the CPU or interrupting the audio/visual presentation being shown by the coprocessor or slowing down the network being served by the computer system.
Thus, although the use of DMA and busmaster systems allow a faster transfer of data between the DASD and the coprocessor, both methods tie up the CPU during DASD accesses, preventing the system from being able to transfer the data needed to present real-time audio/visual presentations or act as a server while the CPU runs a program in the system memory.
It is therefore an object of the present invention to provide a multimedia computer system that does not tie up the CPU or system bus during data transfers.
It is a further object of the present invention to provide a circuit that allows the coprocessor of a multimedia computer system to access a direct access storage device without requiring the CPU to either make the transfers or to release the system bus.